home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue59 / Clinic / ColumnSavingU.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-05-30  |  2.3 KB  |  108 lines

  1. unit ColumnSavingU;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Db, Grids, DBGrids, DBTables;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     DBGrid1: TDBGrid;
  12.     DataSource1: TDataSource;
  13.     Table1: TTable;
  14.     DBGrid2: TDBGrid;
  15.     DataSource2: TDataSource;
  16.     Table2: TTable;
  17.     DBGrid3: TDBGrid;
  18.     DataSource3: TDataSource;
  19.     Table3: TTable;
  20.     DBGrid4: TDBGrid;
  21.     DataSource4: TDataSource;
  22.     Table4: TTable;
  23.     DBGrid5: TDBGrid;
  24.     DataSource5: TDataSource;
  25.     Table5: TTable;
  26.     DBGrid6: TDBGrid;
  27.     DataSource6: TDataSource;
  28.     Table6: TTable;
  29.     procedure FormShow(Sender: TObject);
  30.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  31.   private
  32.     Stream: TStream;
  33.     procedure LoadGridsFromStream(AOwner: TComponent);
  34.     procedure SaveGridsToStream(AOwner: TComponent);
  35.     procedure LoadColumnData;
  36.     procedure SaveColumnData;
  37.   public
  38.     { Public declarations }
  39.   end;
  40.  
  41. var
  42.   Form1: TForm1;
  43.  
  44. implementation
  45.  
  46. {$R *.DFM}
  47.  
  48. const
  49.   ColumnData = 'COLUMNS.DAT';
  50.  
  51. procedure TForm1.LoadGridsFromStream(AOwner: TComponent);
  52. var
  53.   I: Integer;
  54. begin
  55.   for I := 0 to AOwner.ComponentCount - 1 do
  56.   begin
  57.     if AOwner.Components[I] is TDBGrid then
  58.       TDBGrid(AOwner.Components[I]).Columns.LoadFromStream(Stream);
  59.     LoadGridsFromStream(AOwner.Components[I])
  60.   end
  61. end;
  62.  
  63. procedure TForm1.SaveGridsToStream(AOwner: TComponent);
  64. var
  65.   I: Integer;
  66. begin
  67.   for I := 0 to AOwner.ComponentCount - 1 do
  68.   begin
  69.     if AOwner.Components[I] is TDBGrid then
  70.       TDBGrid(AOwner.Components[I]).Columns.SaveToStream(Stream);
  71.     SaveGridsToStream(AOwner.Components[I])
  72.   end
  73. end;
  74.  
  75. procedure TForm1.LoadColumnData;
  76. begin
  77.   if not FileExists(ColumnData) then
  78.     Exit;
  79.   Stream := TFileStream.Create(ColumnData, fmOpenRead or fmShareDenyWrite);
  80.   try
  81.     LoadGridsFromStream(Application)
  82.   finally
  83.     Stream.Free
  84.   end
  85. end;
  86.  
  87. procedure TForm1.SaveColumnData;
  88. begin
  89.   Stream := TFileStream.Create(ColumnData, fmCreate);
  90.   try
  91.     SaveGridsToStream(Application)
  92.   finally
  93.     Stream.Free
  94.   end
  95. end;
  96.  
  97. procedure TForm1.FormShow(Sender: TObject);
  98. begin
  99.   LoadColumnData
  100. end;
  101.  
  102. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  103. begin
  104.   SaveColumnData
  105. end;
  106.  
  107. end.
  108.